home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 6
/
FM Towns Free Software Collection 6.iso
/
ms_dos
/
if2
/
if2.c
next >
Wrap
C/C++ Source or Header
|
1993-07-08
|
3KB
|
111 lines
/* まだまだ動かないけど、ディレクトリ移動は未サポートだけど、形にはなったバージョン(でもこういう形には10月からなっていたんだ。ぐすん。SYSTEM関数がうまく動かないんだよ~。98ではきちんとコンパイル出来るのに)V.0.1 92/12/30 wed */
/* ひゃっほ~!動いたよ~ん。やったー!!!すげぇ~。 V.1.00 93/1/10 SUN */
/* ちょっとした手直し・・・・ V.1.02 93/2/04 TUE */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void if2_check(char f_name[], char drv[]);
void if2_exec(char if2_file[], char f_name[]);
void main( int argc, char *argv[] )
{
char f_name[32],drv[16];
if ( !( argc == 2 || argc == 3))
{
printf ("Usage : IF2 [op.] data_file_name.???\n");
exit(1);
}
if ( argc == 3)
{
strcpy(drv,argv[1]);
sscanf(argv[2],"%32s",f_name); /* argv[2] からファイル名を取得 */
}
else if ( argc == 2)
{
strcpy(drv,"D:");
sscanf(argv[1],"%32s",f_name); /* argv[1] からファイル名を取得 */
}
if2_check(f_name,drv);
}
void if2_check(char f_name[], char drv[])
{
int n;
char if2_file[128];
FILE *tmpstr;
char ex_1[4],ex_2[4]; /* 拡張子用の配列 */
for( n =0; n <= 31; n++) /* 入力ファイルの拡張子の取得 */
{
if (f_name[n] == '.')
{
sscanf(f_name+n+1,"%3s",ex_1);
break;
}
}
strcat(drv,"\\TMENU.IF2");
if ((tmpstr = fopen(drv,"r")) == NULL)
{
printf("ファイルが開けへんかったわ。ごめんねぇ。\n");
exit(1);
}
for (; fgets(if2_file,128,tmpstr);)
{
sscanf(if2_file,"%3s",ex_2); /* IF2からの拡張子の取得 */
if ( 0 == stricmp(ex_1,ex_2)) /*拡張子の比較 大文字小文字の区別なし*/
{
fclose(tmpstr);
if2_exec(if2_file,f_name);
break;
}
else
continue;
}
}
void if2_exec(char if2_file[], char f_name[])
{
int i = 0,f,n;
char buff[128],tmp[128] = "RUN386.EXE ";
for ( i=10, f=0; '\n' != if2_file[i]; i++, f++)
buff[f] = if2_file[i];
buff[f] = ' '; /* ファイル名の連結がうまくいくおまじない。 */
buff[f+1] = '\0'; /* ナル文字の追加。 f+n+1 が buff の最後*/
printf("%s\n",strcat(buff,f_name)); /*ファイル名の付加*/
if ( if2_file[5] == '0') /* EXE,COM,BAT のチエック */
{
strcat(tmp,buff); /* RUN386 をつける。 */
system(tmp); /* 起動するはず・・・ */
}
else if( if2_file[5] == '1') /* こちらがリアルモード用の処理 */
{
/* CONSOLE.EXE や ORICON.EXE を抜く */
for ( i = 10;; i++)
{
if ( buff[i] == ' ' && buff[i+2] == ':')
{
for( n = i+1, f = 0; buff[n] != '\0'; n++, f++)
tmp[f] = buff[n];
tmp[f] = '\0';
break;
}
}
printf("%s\n",tmp);
system(tmp);
}
}